home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Purity
/
Purity #21 (1994-01-12)(Diesel)(DE)[WB].zip
/
Purity #21 (1994-01-12)(Diesel)(DE)[WB].adf
/
ModToPas
/
txt
/
Damen.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-12-13
|
2KB
|
94 lines
(**********************************************************************
:Program. Dame.mod
:Contents. Lösung des 8-Damen Problems
:Author. Markus Uhlendahl
:Address. Vorm Burgtor 16, 4408 Dülmen
:Phone. 02594/81540
:Copyright. Public Domain
:Language. Modula-2
:Translator. M2Amiga AMSoft V3.3d
**********************************************************************)
PROGRAM Damen;
CONST n = 8;
TYPE vektorTyp = ARRAY[0..n] OF INTEGER;
VAR v : vektorTyp;
i : INTEGER;
l : INTEGER;
PROCEDURE Ausgabe (v : vektorTyp);
VAR i : INTEGER;
BEGIN
FOR i:=1 TO n DO BEGIN
Write ('(');Write (v[i]:2);Write ('|');
Write (i:2);Write (')');
END;
WriteLn;
END;
FUNCTION akzeptiert (v : vektorTyp) : BOOLEAN;
VAR a : BOOLEAN;
i : INTEGER;
BEGIN
a:=TRUE;
i:=1;
WHILE (i<v[0]) AND (a) DO BEGIN
IF v[v[0]]=v[i] THEN BEGIN
a:=FALSE;
END;
IF v[v[0]]+v[0]=v[i]+i THEN BEGIN
a:=FALSE;
END;
IF v[v[0]]-v[0]=v[i]-i THEN BEGIN
a:=FALSE;
END;
i:=i+1;
END;
akzeptiert:= (a); EXIT;
END;
PROCEDURE versuche (v : vektorTyp);
VAR i : INTEGER;
BEGIN
v[0]:=v[0]+1;
FOR i:=1 TO n DO BEGIN
v[v[0]]:=i;
IF akzeptiert (v) THEN BEGIN
IF v[0]=n THEN BEGIN
Ausgabe (v);
l:=l+1;
END ELSE BEGIN
versuche (v);
END;
END;
END;
END;
BEGIN
l:=0;
FOR i:=0 TO n DO BEGIN
v[i]:=0;
END;
versuche (v);
Write ('Anzahl der Lösungen:');Write (l:6);WriteLn;
END.